<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Language" content="zh-CN"><title>sysusers.d
  中文手册 [金步国]</title><style>
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1 { text-align:center; background:#ddd; }
h2#auth_name { text-align:center; margin: 10px 5%; }

    a.headerlink {
      color: #c60f0f;
      font-size: 0.8em;
      padding: 0 4px 0 4px;
      text-decoration: none;
      visibility: hidden;
    }

    a.headerlink:hover {
      background-color: #c60f0f;
      color: white;
    }

    h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
      visibility: visible;
    }
</style><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><h1>sysusers.d 中文手册</h1><h2 id="auth_name">译者：<strong><a href="http://www.jinbuguo.com/">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p><ul><li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li><li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li><li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li></ul><h3>其他作品</h3><p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p><ul><li><a href="http://www.jinbuguo.com/">金步国作品集</a> [ <a href="http://www.jinbuguo.com/">http://www.jinbuguo.com/</a> ]</li></ul><h3>联系方式</h3><p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p><ul><li>Email(QQ)：70171448在QQ邮箱</li></ul><hr><a href="systemd.index.html">手册索引</a> ·
  <a href="systemd.directives.html">指令索引</a><span style="float:right">systemd-241</span><hr><div class="refentry"><a name="sysusers.d"></a><div class="titlepage"></div><div class="refnamediv"><h2>名称</h2><p>sysusers.d — 声明需要分配的系统用户与组</p></div><div class="refsynopsisdiv"><h2>大纲</h2><p><code class="filename">/etc/sysusers.d/*.conf</code></p><p><code class="filename">/run/sysusers.d/*.conf</code></p><p><code class="filename">/usr/lib/sysusers.d/*.conf</code></p></div><div class="refsect1"><a name="id-1.5"></a><h2 id="描述">描述<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E6%8F%8F%E8%BF%B0">¶</a></h2><p><span class="command"><strong>systemd-sysusers</strong></span> 工具根据
    <code class="filename">sysusers.d</code> 目录中的配置文件的指引，
    在安装软件包或系统启动时创建系统用户与组，以及将用户添加到组之中。
    因为 <span class="command"><strong>systemd-sysusers</strong></span> 工具直接操作
    <code class="filename">/etc/passwd</code> 与 <code class="filename">/etc/group</code> 文件，
    所以仅可用于创建系统用户与组，
    而不可用于创建非系统用户或组(比如基于 NIS 
    或 LDAP 的用户数据库)。</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="配置目录及其优先级">配置目录及其优先级<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E9%85%8D%E7%BD%AE%E7%9B%AE%E5%BD%95%E5%8F%8A%E5%85%B6%E4%BC%98%E5%85%88%E7%BA%A7">¶</a></h2><p>配置文件的名称必须符合
    <code class="filename"><em class="replaceable"><code>package</code></em>.conf</code> 或
    <code class="filename"><em class="replaceable"><code>package</code></em>-<em class="replaceable"><code>part</code></em>.conf</code> 格式。
    当需要明确的将某部分(part)配置提取出来，以方便用户专门针对这部分进行修改的时候，
    应该使用第二种命名格式。</p><p>对于不同目录下的同名配置文件，
    仅以优先级最高的目录中的那一个为准。
    具体说来就是：
    <code class="filename">/etc/</code> 的优先级最高、
    <code class="filename">/run/</code> 的优先级居中、
    <code class="filename">/usr/lib/</code> 的优先级最低。
    软件包应该将自带的配置文件安装在
    <code class="filename">/usr/lib/</code> 目录中，
    而 <code class="filename">/etc/</code> 目录仅供系统管理员使用。
    所有的配置文件，
    无论其位于哪个目录中，
    都统一按照文件名的字典顺序处理。
    如果在多个配置文件中设置了同一个用户或组，
    那么仅以文件名最靠前(字典顺序)的那一个为准，
    其他针对同一个用户或组的配置项将会作为警告信息记录到错误日志中。
    </p><p>如果系统管理员想要屏蔽 <code class="filename">/usr/lib/</code> 目录中的某个配置文件，
    那么最佳做法是在 <code class="filename">/etc/</code> 目录中
    创建一个指向 <code class="filename">/dev/null</code> 的同名符号链接，
    即可彻底屏蔽 <code class="filename">/usr/lib/</code> 目录中的同名文件。
    </p></div><div class="refsect1"><a name="id-1.7"></a><h2 id="配置文件格式">配置文件格式<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F">¶</a></h2><p>配置文件的格式是每行对应一个用户或组，包含如下字段：
    类型, 名称, ID, 简要描述, 家目录, 登录shell</p><pre class="programlisting">#Type Name     ID             GECOS                 家目录         Shell
u     httpd    404            "HTTP User"
u     authd    /usr/bin/authd "Authorization user"
u     postgres -              "Postgresql Database" /var/lib/pgsql /usr/libexec/postgresdb
g     input    -              -
m     authd    input
u     root     0              "Superuser"           /root          /bin/zsh</pre><p>空行和以 # 开头的行
    都将被忽略。</p><div class="refsect2"><a name="id-1.7.5"></a><h3 id="类型(Type)">类型(Type)<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E7%B1%BB%E5%9E%8B(Type)">¶</a></h3><p>"类型"字段仅包含一个单独的字母。
      可以识别的类型如下：</p><div class="variablelist"><dl class="variablelist"><dt id="u"><span class="term"><code class="varname">u</code></span><a class="headerlink" title="Permalink to this term" href="sysusers.d.html#u">¶</a></dt><dd><p>按照"名称"字段的值，创建一个系统用户以及一个同名的组，
          并将此用户的主组设为此同名组。
          此账户创建后将处于禁用状态，
          因此用户也将被设为禁止登录。</p></dd><dt id="g"><span class="term"><code class="varname">g</code></span><a class="headerlink" title="Permalink to this term" href="sysusers.d.html#g">¶</a></dt><dd><p>按照"名称"字段的值创建一个系统组，
          并且不设组密码。注意，前面的 <code class="varname">u</code>
          隐含的会创建一个与用户名称相同的组，
          并且不设组密码。</p></dd><dt id="m"><span class="term"><code class="varname">m</code></span><a class="headerlink" title="Permalink to this term" href="sysusers.d.html#m">¶</a></dt><dd><p>将"名称"字段指定的用户添加到"ID"字段指定的组里。
          如果指定的用户或组不存在，
          则自动创建它。</p></dd><dt id="r"><span class="term"><code class="varname">r</code></span><a class="headerlink" title="Permalink to this term" href="sysusers.d.html#r">¶</a></dt><dd><p>向 UID/GID 分配池中添加一段可分配号段。
          若不存在此行，
          则使用编译时的默认值。
          注意，
          为了尽量确保同名的用户/组拥有相同的UID/GID，
          UID与GID都是
          从同一个号段池子中分配的。</p></dd></dl></div></div><div class="refsect2"><a name="id-1.7.6"></a><h3 id="名称(Name)">名称(Name)<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E5%90%8D%E7%A7%B0(Name)">¶</a></h3><p>"名称"字段指定了用户或组的名字。
      仅可包含常规ASCII字符( a-z A-Z 0-9 _ - )
      并且首字符只能是字母或下划线，
      长度必须是 1-31 个字符。</p><p>强烈建议使用不易发生冲突的名字，
      例如避免使用常见的名字并且
      在名字前加上"_"前缀。</p><p>对于 <code class="varname">m</code> 来说，
      此字段是将要被添加到指定组中的用户名。</p><p>对于 <code class="varname">r</code>来说，
      此字段必须被设为 "<code class="literal">-</code>"</p></div><div class="refsect2"><a name="id-1.7.7"></a><h3 id="ID">ID<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#ID">¶</a></h3><p>对于 <code class="varname">u</code> 与 <code class="varname">g</code>
      来说，此字段是一个32位十进制UID/GID数字。
      不要使用 65535 或 4294967295 两个值，因为这是两个有特殊含义的占位符。
      设为 "<code class="literal">-</code>" 表示使用自动分配的UID/GID数字(强烈建议使用自动分配，
      除非必须使用精确的 UID 或 GID 值)。
      若设为一个绝对路径，
      则表示使用此路径的属主/属组。
      这可用于根据已有文件的
      属主/属组(例如带有SUID/SGID位二进制程序)
      创建用户与组。
      还可以使用 "<code class="literal"><em class="replaceable"><code>uid</code></em>:<em class="replaceable"><code>gid</code></em></code>"
      语法来创建 UID 与 GID 值不同的用户与组。指定 GID 值的组必须首先创建或者已经存在。
      这个语法中的 UID 可还以设为 "<code class="literal">-</code>" 表示自动分配。
      </p><p>对于 <code class="varname">m</code> 来说，
      此字段是将要吸纳新用户的组名称。</p><p>对于 <code class="varname">r</code> 来说，
      此字段必须被设为
      "<code class="literal">FROM-TO</code>"
      格式的两个十进制UID/GID数字，
      以表示一个范围。</p></div><div class="refsect2"><a name="id-1.7.8"></a><h3 id="简要描述(GECOS)">简要描述(GECOS)<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E7%AE%80%E8%A6%81%E6%8F%8F%E8%BF%B0(GECOS)">¶</a></h3><p>对于 <code class="varname">u</code> 来说，表示对新建用户的简要描述，
      必须用引号界定，且不可包含冒号(:)。</p><p>对于其他非 <code class="varname">u</code> 类型，
      必须忽略(或设为 "<code class="literal">-</code>")。</p></div><div class="refsect2"><a name="id-1.7.9"></a><h3 id="家目录(Home)">家目录(Home)<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E5%AE%B6%E7%9B%AE%E5%BD%95(Home)">¶</a></h3><p>对于 <code class="varname">u</code> 来说，
      表示新建用户的家目录，若省略则表示使用默认的"/"(根目录)。</p><p>对于其他非 <code class="varname">u</code> 类型，
      必须忽略(或设为 "<code class="literal">-</code>")。
      除非软件明确需要，否则建议不要为系统用户设置不必要的家目录。</p></div><div class="refsect2"><a name="id-1.7.10"></a><h3 id="Shell">Shell<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#Shell">¶</a></h3><p>用户的登录 shell 。对于 UID≠0 的普通用户来说，其默认值是
      <code class="filename">/sbin/nologin</code> ；而对于 UID=0 的根用户来说，
      其默认值是 <code class="filename">/bin/sh</code> 。</p><p>对于其他非 <code class="varname">u</code> 类型，
      必须忽略(或设为 "<code class="literal">-</code>")。
      除非软件明确需要，否则不建议设为 <code class="filename">/sbin/nologin</code> 之外的其他值。</p></div></div><div class="refsect1"><a name="id-1.8"></a><h2 id="替换符">替换符<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E6%9B%BF%E6%8D%A2%E7%AC%A6">¶</a></h2><p>可以在 "Name", "ID", "GECOS", "家目录", "Shell" 字段中使用替换符。
    不可识别的替换符将会被视为配置错误。
    可识别的替换符如下：</p><div class="table"><a name="id-1.8.3"></a><p class="title"><b>表 1. 可识别的替换符</b></p><div class="table-contents"><table class="table" summary="可识别的替换符" border="1"><colgroup><col align="left" class="spec"><col align="left" class="mean"></colgroup><thead><tr><th align="left">替换符</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left">"<code class="literal">%b</code>"</td><td align="left">系统的"Boot ID"字符串。参见 <a href="http://man7.org/linux/man-pages/man4/random.4.html"><span class="citerefentry"><span class="refentrytitle">random</span>(4)</span></a> 手册。</td></tr><tr><td align="left">"<code class="literal">%H</code>"</td><td align="left">系统的主机名(hostname)</td></tr><tr><td align="left">"<code class="literal">%m</code>"</td><td align="left">系统的"Machine ID"字符串。参见 <a href="machine-id.html#"><span class="citerefentry"><span class="refentrytitle">machine-id</span>(5)</span></a> 手册。</td></tr><tr><td align="left">"<code class="literal">%T</code>"</td><td align="left">临时文件目录。也就是 <code class="filename">/tmp</code> 或 "<code class="literal">$TMPDIR</code>", "<code class="literal">$TEMP</code>", "<code class="literal">$TMP</code>" 之一(若已设置)</td></tr><tr><td align="left">"<code class="literal">%v</code>"</td><td align="left">内核版本(<span class="command"><strong>uname -r</strong></span> 的输出)</td></tr><tr><td align="left">"<code class="literal">%V</code>"</td><td align="left">存放大体积临时文件以及持久临时文件的目录。也就是 <code class="filename">/var/tmp</code> 或 "<code class="literal">$TMPDIR</code>", "<code class="literal">$TEMP</code>", "<code class="literal">$TMP</code>" 之一(若已设置)</td></tr><tr><td align="left">"<code class="literal">%%</code>"</td><td align="left">百分号自身(%)。使用"%%"表示一个真正的"%"字符。</td></tr></tbody></table></div></div><br class="table-break"></div><div class="refsect1"><a name="id-1.9"></a><h2 id="幂等性">幂等性<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E5%B9%82%E7%AD%89%E6%80%A7">¶</a></h2><p>所谓"幂等性"是指任意多次执行所产生的影响均与一次执行的影响相同。
    也就是说如果被操作的用户或组已经存在、或者用户已经是指定组的成员，
    那么 <span class="command"><strong>systemd-sysusers</strong></span> 将不会改变任何现有状态。
    所以，一般不应该修改发行商的默认设置，
    除非你想禁止创建某些用户或组。</p></div><div class="refsect1"><a name="id-1.10"></a><h2 id="参见">参见<a class="headerlink" title="Permalink to this headline" href="sysusers.d.html#%E5%8F%82%E8%A7%81">¶</a></h2><p>
      <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
      <a href="systemd-sysusers.html#"><span class="citerefentry"><span class="refentrytitle">systemd-sysusers</span>(8)</span></a>
    </p></div></div></body></html>
